import { get, post, put, del } from './request';

/**
 * 单词学习模块API
 */
const wordApi = {
  /**
   * 获取单词列表
   * @param {Object} params - 查询参数
   * @param {number} params.page - 页码
   * @param {number} params.pageSize - 每页数量
   * @param {string} params.level - 单词等级（可选）
   * @param {string} params.category - 单词分类（可选）
   * @param {string} params.search - 搜索关键词（可选）
   * @returns {Promise} - 返回单词列表数据
   */
  getWordList: (params) => {
    return get('/api/words', params);
  },

  /**
   * 获取单词详情
   * @param {string} wordId - 单词ID
   * @returns {Promise} - 返回单词详情数据
   */
  getWordDetail: (wordId) => {
    return get(`/api/words/${wordId}`);
  },

  /**
   * 获取推荐学习单词
   * @param {number} count - 获取数量
   * @returns {Promise} - 返回推荐单词列表
   */
  getRecommendedWords: (count = 10) => {
    return get('/api/words/recommended', { count });
  },

  /**
   * 获取学习记录
   * @param {Object} params - 查询参数
   * @param {number} params.page - 页码
   * @param {number} params.pageSize - 每页数量
   * @param {string} params.status - 学习状态（可选：learning, mastered, failed）
   * @returns {Promise} - 返回学习记录列表
   */
  getLearningRecords: (params) => {
    return get('/api/learning-records', params);
  },

  /**
   * 更新学习记录
   * @param {Object} data - 学习记录数据
   * @param {string} data.wordId - 单词ID
   * @param {string} data.status - 学习状态（learning, mastered, failed）
   * @param {number} data.score - 得分（可选）
   * @param {string} data.notes - 笔记（可选）
   * @returns {Promise} - 返回更新结果
   */
  updateLearningRecord: (data) => {
    return post('/api/learning-records', data);
  },

  /**
   * 收藏单词
   * @param {string} wordId - 单词ID
   * @returns {Promise} - 返回收藏结果
   */
  favoriteWord: (wordId) => {
    return post('/api/favorites', { wordId });
  },

  /**
   * 取消收藏单词
   * @param {string} wordId - 单词ID
   * @returns {Promise} - 返回取消收藏结果
   */
  unfavoriteWord: (wordId) => {
    return del(`/api/favorites/${wordId}`);
  },

  /**
   * 获取收藏单词列表
   * @param {Object} params - 查询参数
   * @param {number} params.page - 页码
   * @param {number} params.pageSize - 每页数量
   * @returns {Promise} - 返回收藏单词列表
   */
  getFavoriteWords: (params) => {
    return get('/api/favorites', params);
  },

  /**
   * 检查单词是否已收藏
   * @param {string} wordId - 单词ID
   * @returns {Promise} - 返回是否已收藏
   */
  checkFavorite: (wordId) => {
    return get(`/api/favorites/check/${wordId}`);
  },

  /**
   * 创建单词测试
   * @param {Object} params - 测试参数
   * @param {number} params.count - 测试单词数量
   * @param {string} params.level - 单词等级（可选）
   * @param {string} params.category - 单词分类（可选）
   * @returns {Promise} - 返回测试单词列表
   */
  createTest: (params) => {
    return get('/api/words/test', params);
  },

  /**
   * 提交测试结果
   * @param {Object} data - 测试结果数据
   * @param {string[]} data.answers - 答案数组
   * @param {Object[]} data.results - 测试结果详情
   * @returns {Promise} - 返回测试成绩和分析
   */
  submitTestResult: (data) => {
    return post('/api/tests/result', data);
  },

  /**
   * 获取学习统计数据
   * @param {string} timeRange - 时间范围（week, month, all）
   * @returns {Promise} - 返回学习统计数据
   */
  getLearningStats: (timeRange = 'week') => {
    return get('/api/learning/stats', { timeRange });
  },

  /**
   * 获取单词发音
   * @param {string} word - 单词
   * @returns {Promise} - 返回发音URL
   */
  getWordPronunciation: (word) => {
    return get('/api/words/pronunciation', { word });
  },

  /**
   * 获取每日学习任务
   * @returns {Promise} - 返回每日学习任务信息
   */
  getDailyTask: () => {
    return get('/api/learning/daily-task');
  },

  /**
   * 完成每日学习任务
   * @returns {Promise} - 返回任务完成结果
   */
  completeDailyTask: () => {
    return post('/api/learning/daily-task/complete');
  }
};

export default wordApi;